/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.apli.haiam.admin.entidades;

import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apli.haiam.ejb.entidades.AdmAccion;
import org.apli.haiam.ejb.entidades.AdmDatosGlobales;
import org.apli.haiam.ejb.entidades.AdmMenu;
import org.apli.haiam.ejb.entidades.AdmSesion;
import org.apli.haiam.ejb.entidades.AdmSistema;
import org.apli.haiam.ejb.entidades.AdmUsuario;

/**
 * Sirve para encapsular los datos del usuario dell sistema.
 * <p>
 * <H6>Soporte:HAIMA
 * <I>david_s_1086@hotmail.com,david.carranza@haiam.gob.ec</I></H6>
 *
 * @author david Carranza
 * @version 1.0 30/07/2014
 */
public class UsuarioAdmin {

    private static final long serialVersionUID = 1L;
    /**
     * Objeto usuario de la base de datos
     */
    private AdmUsuario user;
    /**
     * IP del cliente que se conecta
     */
    private String ip;
    
     /**
     * Clave 2 para autentificar acceso
     */
    private String clave2;
    /**
     * HOST del cliente que se conecta
     */
    private String host;
    /**
     * Objeto sistema que se conecta
     */
    private AdmSistema sistema;
    /**
     * Objeto sistema que se conecta el sistema principal
     */
    private AdmSistema sistemaPrincipal;
    /**
     * Map de tipo AdmAccion para los permisos
     */
    private Map<String, AdmAccion> permisosMap;
    /**
     * Map de tipo AdmAccion para los permisos
     */
    private Map<String, AdmMenu> menuBarMap;
    /**
     * Map de tipo AdmMenu para cargar los submenus por usuario
     */
    private Map<String, List<AdmMenu>> menuItemsMap;
    /**
     * Map de tipo AdmMenu para cargar los menus por usuario
     */
    private Map<String, AdmMenu> menuMap;
    /**
     * Lista de tipo AdmMenu
     */
    private List<AdmMenu> menu;
    /**
     * Lista de tipo AdmDatosGlobales para cargar informacion base
     */
    private List<AdmDatosGlobales> datosGlobales;
    /**
     * Objeto de tipo AdmUsuario que identifica si el usuario es una institucion
     * fuera del hospital
     */
    private boolean usuarioExterno;
    /**
     * Objeto de tipo AdmSesion que posee los datos de sesion
     */
    private AdmSesion sesion;
    /**
     * Nombre Full del usuario
     */
    private String nombreFull;
    /**
     * Id de la institucion
     */
    private Integer idInstitucion;
    /**
     * Nombre de la institucion
     */
    private String nombreInstitucion;
    /**
     * Nombre de la institucion
     */
    private String bpmId;

    /**
     * Constructor.
     *
     * @param user el usuario
     */
    public UsuarioAdmin(AdmUsuario user) {
        this.user = user;
    }

    /**
     * Dirección IP del equipo de donde se inicia una sesión en el sistema.
     *
     * @return la IP
     */
    public String getIp() {
        return ip;
    }

    /**
     * Permite poner la ip del computador del cual se inició la sesión en el
     * sistema.
     *
     * @param ip la IP
     */
    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    /**
     * Retorna un objeto el mismo que contendrá los datos del usuario que inicia
     * una sesión.
     *
     * @return el objeto con los datos del usuario
     */
    public AdmUsuario getUser() {
        return user;
    }

    public void setUsuario(AdmUsuario user) {
        this.user = user;
    }

    public void setUser(AdmUsuario user) {
        this.user = user;
    }

    public String getUsername() {
        return user.getUsername();
    }
    
    public String getClave2() {
        return clave2;
    }

    public void setClave2(String clave2) {
        this.clave2 = clave2;
    }

    public String getApellidos() {
        return null;
    }

    public String getNombres() {
        return null;
    }

//////    public String getFullNombre() {
////////        String s = user.getApellidos() + " " + user.getNombres();
////////        if (user.getTitulo() != null && user.getTitulo().trim().length() > 0) {
////////            s = user.getTitulo().trim() + " " + s;
////////        }
////////        return s;
//////        return null;
//////    }
    public String getNombreFull() {
        return nombreFull;
    }

    public void setNombreFull(String nombreFull) {
        this.nombreFull = nombreFull;
    }

//    public Date getFechaCreacion() {
//        return user.getFechaRegistro();
//    }
    public Date getFechaUltimoAcceso() {
        return user.getFechaUltimoAcceso();
    }

    public boolean isEstado() {
        return user.getEstado() == 1;
    }

    public List<AdmMenu> getMenu() {
        return menu;
    }

    public void setMenu(List<AdmMenu> menu) {
        this.menu = menu;
    }

    public Map<String, AdmMenu> getMenuBarMap() {
        return menuBarMap;
    }

    public void setMenuBarMap(Map<String, AdmMenu> menuBarMap) {
        this.menuBarMap = menuBarMap;
    }

    public Map<String, List<AdmMenu>> getMenuItemsMap() {
        return menuItemsMap;
    }

    public void setMenuItemsMap(Map<String, List<AdmMenu>> menuItemsMap) {
        this.menuItemsMap = menuItemsMap;
    }

    public Map<String, AdmMenu> getMenuMap() {
        return menuMap;
    }

    public void setMenuMap(Map<String, AdmMenu> menuMap) {
        this.menuMap = menuMap;
    }

    public AdmSistema getSistemaPrincipal() {
        return sistemaPrincipal;
    }

    public void setSistemaPrincipal(AdmSistema sistemaPrincipal) {
        this.sistemaPrincipal = sistemaPrincipal;
    }

    public Map<String, AdmAccion> getPermisosMap() {
        return permisosMap;
    }

    public void setPermisosMap(Map<String, AdmAccion> permisosMap) {
        this.permisosMap = permisosMap;
    }

    public AdmSistema getSistema() {
        return sistema;
    }

    public void setSistema(AdmSistema sistema) {
        this.sistema = sistema;
    }

    public AdmSesion getSesion() {
        return sesion;
    }

    public void setSesion(AdmSesion sesion) {
        this.sesion = sesion;
    }

    public boolean isUsuarioExterno() {
        return usuarioExterno;
    }

    public void setUsuarioExterno(boolean usuarioExterno) {
        this.usuarioExterno = usuarioExterno;
    }

    public List<AdmDatosGlobales> getDatosGlobales() {
        return datosGlobales;
    }

    public void setDatosGlobales(List<AdmDatosGlobales> datosGlobales) {
        this.datosGlobales = datosGlobales;
    }

    public Integer getIdInstitucion() {
        return idInstitucion;
    }

    public void setIdInstitucion(Integer idInstitucion) {
        this.idInstitucion = idInstitucion;
    }

    public String getNombreInstitucion() {
        return nombreInstitucion;
    }

    public void setNombreInstitucion(String nombreInstitucion) {
        this.nombreInstitucion = nombreInstitucion;
    }

    public String getBpmId() {
        return bpmId;
    }

    public void setBpmId(String bpmId) {
        this.bpmId = bpmId;
    }
    
    

}
